const fs = require('fs')
const path = require('path')

//定义正则表达式分别匹配style和script
const regStyle = /<style>[\s\S]*<\/style>/
const regScript = /<script>[\s\S]*<\/script>/

//调用fs.readFile()方法读取文件
fs.readFile(path.join(__dirname, 'index.html'), 'utf8', function (err, dataStr) {
  if (err) return console.log('读取HTML文件失败!' + err.message);
  //读取文件成功后,调用对用的三个方法，分别拆分出html,css,js文件
  resolveCss(dataStr)
  resolveScript(dataStr)
  resolveHTML(dataStr)
})

//处理css
function resolveCss(dataStr) {
  const r1 = regStyle.exec(dataStr)
  //将提取出来的样式字符串进行字符串replace替换操作
  const newCss = r1[0].replace('<style>', '').replace('</style>', '')
  //调用fs.weiteFile()方法将提取的样式写入到clock中
  fs.writeFile(path.join(__dirname, './clock/index.css'), newCss, function (err) {
    if (err) return console.log('写入css样式失败!' + err.message);
    console.log('写入样式文件成功');
  })
}

//处理js
function resolveScript(dataStr) {
  const r2 = regScript.exec(dataStr)
  //将提取出来的js字符串进行字符串replace替换操作
  const newScript = r2[0].replace('<script>', '').replace('</script>', '')
  //调用fs.weiteFile()方法将提取的js代码写入到clock中
  fs.writeFile(path.join(__dirname, './clock/index.js'), newScript, function (err) {
    if (err) return console.log('写入js文件失败!' + err.message);
    console.log('写入文件成功!');
  })
}

//定义处理html结构的方法
function resolveHTML(dataStr) {
  const newHTML = dataStr.replace(regStyle, '<link rel="stylesheet" href="./index.css" />').replace(regScript, '<script src="./index.js"></script>')
  fs.writeFile(path.join(__dirname,'./clock/index.html'),newHTML,function(err){
    if(err) return console.log('写入HTML文件失败!');
    console.log('写入文件成功!');
  })
}


//注意事项 fs.wirteFile只能创建文件不能创建目录
//重复调用fs.wirteFile写入同一个文件,新写入的内容会覆盖之前的旧内容
